package lanqiao14;
// OK
import java.util.Scanner;

public class E {
    static final int mode = (int) (1e9 + 7);

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long n = scanner.nextLong();
        long L = scanner.nextLong();
        long R = scanner.nextLong();
        scanner.close();

        if (L <= n && n <= R) {// n 在  L 到 R 范围内
            long ans = n - L + 1;// 到位置 L-1 的距离
            for (int i = 1; i <= 2000; i++) {
                if (!check(R + i, L, R)) {
                    ans = Math.min(ans, R + i - n);
                    break;
                }
            }
            System.out.println(ans);
        } else {// n 在  L 到 R 范围外
            for (int i = 0; i <= 2000; i++) {
                if (!check(n + i, L, R) || !check(n - i, L, R)) {// i 即为走的步数
                    System.out.println(i);
                    break;
                }
            }
        }
    }

    // 判断某个位置是否可行，可行则返回 false
    private static boolean check(long x, long L, long R) {
        for (long i = 1; i * i <= x; i++) {
            if (x % i == 0) {// i 是该位置的 因数
                if (L <= i && i <= R) return true;// 如果 i 在范围内，不可行
                if (L <= x / i && x / i <= R) return true;// x/i 也是该位置的因数，如果在范围内，不可行
            }
        }
        return false;
    }
}
